//package com.kiki.goodsRecommend;
//
//import java.util.HashMap;
//import java.util.Map;
//
//public class PearsonCorrelation {
//    public static void main(String[] args) {
//        // 用户评分数据
//        Map<String, Map<String, Double>> ratings = new HashMap<>();
//        Map<String, Double> user1 = new HashMap<>();
//        user1.put("item1", 4.0);
//        user1.put("item2", 5.0);
//        user1.put("item3", 3.0);
//        ratings.put("user1", user1);
//
//        Map<String, Double> user2 = new HashMap<>();
//        user2.put("item1", 2.0);
//        user2.put("item2", 3.0);
//        user2.put("item3", 1.0);
//        ratings.put("user2", user2);
//
//        Map<String, Double> user3 = new HashMap<>();
//        user3.put("item1", 3.0);
//        user3.put("item2", 4.0);
//        user3.put("item3", 2.0);
//        ratings.put("user3", user3);
//
//        // 计算用户1和用户2的皮尔逊相关系数
//        double correlation = calculatePearsonCorrelation(ratings, "user1", "user2");
//        System.out.println("User1 and User2 correlation: " + correlation);
//
//        // 计算用户1和用户3的皮尔逊相关系数
//        correlation = calculatePearsonCorrelation(ratings, "user1", "user3");
//        System.out.println("User1 and User3 correlation: " + correlation);
//    }
//
//    public static double calculatePearsonCorrelation(Map<String, Map<String, Double>> ratings, String user1, String user2) {
//        double sum1 = 0.0;
//        double sum2 = 0.0;
//        double sum1Sq = 0.0;
//        double sum2Sq = 0.0;
//        double pSum = 0.0;
//        int n = 0;
//
//        for (String item : ratings.get(user1).keySet()) {
//            if (ratings.get(user2).containsKey(item)) {
//                double rating1 = ratings.get(user1).get(item);
//                double rating2 = ratings.get(user2).get(item);
//                sum1 += rating1;
//                sum2 += rating2;
//                sum1Sq += rating1 * rating1;
//                sum2Sq += rating2 * rating2;
//                pSum += rating1 * rating2;
//                n++;
//            }
//        }
//
//        double numerator = pSum - (sum1 * sum2 / n);
//        double denominator = Math.sqrt((sum1Sq - Math.pow(sum1, 2) / n) * (sum2Sq - Math.pow(sum2, 2) / n));
//
//        if (denominator == 0) {
//            return 0.0;
//        }
//
//        return numerator / denominator;
//    }
//}
